var fs = require("fs");
var path = require("path");
const { resolve } = require("path/posix");
// console.log(fs);

// node中的相对路径 并非相对于当前文件,而是相对于命令行(cmd powshell)启动的目录

// fs.readFile(url , encode , callback) 读取文件内容
// url 为需要读取的文件路径
// ecnode 需要采用哪种字符编码集来进行内容读取
// callback 当文件读取完毕之后的回调函数   
//         该回调函数会接收两个形参   error,data
//         第一个形参为读取失败时的错误信息
//         第二个形参为读取成功时的文本内容

function _readFile(url, encode) {
    return new Promise(function (resolve, reject) {
        fs.readFile(url, encode, function (err, data) {
            if (err) {
                reject(err)
            }
            resolve(data)
        })
    })
}


// 报错:   node中的相对路径 并非相对于当前文件,而是相对于命令行(cmd powshell)启动的目录
// C:\Users\怀霜凌志\Desktop\2111\node    "../data/1.txt"
// fs.readFile("../data/1.txt", "utf-8", function (err, data) {
//     if (err) {
//         throw err;
//     }
//     console.log(data);
// })

// __dirname  => C:\Users\怀霜凌志\Desktop\2111\node\inside
// fs.readFile(path.resolve(__dirname, "../data/1.txt"), "utf-8", function (err, data) {
//     if (err) {
//         throw err;
//     }
//     console.log(data);
// })

// fs.readFile(path.resolve(__dirname, "../data/2.jpg"), "binary", function (err, data) {
//     if (err) {
//         throw err;
//     }
//     console.log(data);
// })



// fs.writeFile(filename,content,[options],callback)
//  filename  String 文件名
//  content      String|buffer  //需要写入的数据
//  option    Object
//  		encoding  String |null   default='utf-8'
//  		flag      String         default='w' //1、默认"w"(直接写入数据，会清空原有数据)  2、{ 'flag': 'a' } 可重复写入数据
//         flag属性
//             w ：写入文件，文件不存在则创建，存在则清空；
//             wx ：和w一样，但是文件存在时会报错；
//             w+ ：读取并写入文件，文件不存在则创建，存在则清空；
//             wx+ ：和w+一样，但是文件存在时会报错；
//             a ：以追加方式写入文件，文件不存在则创建；
//             ax ：和a一样，但是文件存在时会报错；
//             a+ ：读取并追加写入文件，文件不存在则创建；
//             ax+ ：和a+一样，但是文件存在时会报错。
//   callback 动作执行完后的回调函数


// 异步 => 回调函数
// fs.writeFile(path.resolve(__dirname, "../data/2.txt"), "今天又是充满七万的一天", { encoding: "utf-8", flag: "a" }, function (err) {
//     if (err) {
//         throw err;
//     }
//     console.log("写入成功");
// })

// 同步 
/* fs.writeFileSync("./data/1.txt", "今天又是充满七万的一天", {
    encodeing: "utf-8",
    flag: "ax+"
})
console.log("写入成功"); */


// .appendFile(url,content,option,callback) 向已存在的文件的最后添加新的内容
//   url为需要追加内容的文件所在路径
//   content 为需要追加到文件的内容

// fs.appendFile(path.resolve(__dirname, "../data/3.txt"), "今天又是充满七万的一天", { encoding: "utf-8" }, function (err) {
//     if (err) {
//         throw err;
//     }
//     console.log("写入成功");
// })

// .unlink(url , callback) 删除文件 
//     url为需要被删除的文件路径
//     callback 为操作执行完毕后的回调函数
// fs.unlink("./data/2.txt", function (err) {
//     if (err) throw err;
//     console.log("文件删除成功");
// })





// ----------------------------文件夹-----------------------------------


// fs.mkdir(url,callback)  创建目录    
// url为需要创建的目录所在路径   
// callback 创建动作执行完成之后的回调函数

// fs.mkdir(path.resolve(__dirname, "../data/1111"), function (err) {
//     if (err) {
//         throw err;
//     }
//     console.log("文件夹创建成功");
// })

// fs.readdir(url,callback)  读取目录 
// url      为需要读取的目录所在路径   
// callback 读取动作执行完成之后的回调函数
// fs.readdir(path.resolve(__dirname, "../data"), function (err, data) {
//     if (err) {
//         throw err;
//     }
//     console.log("文件夹读取成功", data);
// })

// .rmdir(url , callback)  删除目录  (目录必须为空才能被删除)
//     url为需要被删除的目录路径
//     callback 为操作执行完后的回调函数
// fs.rmdir("./data", function (err) {
//     if (err) throw err;
//     console.log("文件夹删除成功");
// })

// ---------------------------判断存在  信息-------------------------------------

// .exists(url,callback)  判断文件或文件夹是否存在
//     url 为需要被读取的目录路径
//     callback 为读取完毕后执行的回调函数
//         第一个形参 result为文件是否存在的Bool值 true存在，false 不存在
// fs.exists(path.resolve(__dirname, "../data/1111"), function (result) {
//     console.log(result);  // 存在:true  不存在false
// })


// fs.stat(path.resolve(__dirname, "../data/1.txt"), function (err, info) {
//     if (err) throw err;
//     console.log(info.isDirectory());
// })


